package praca.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import praca.framework.FileIOGL;
import praca.framework.GameGL;
import praca.framework.InputGL;
import praca.interfejsy.Screen;
import android.util.Log;

public class GoldInzynier extends GameGL{

	String odczytany;
	
	public int checkPlace(int score){
		/*
		 * Zwraca pozycje gracza na liscie 5 najlepszych wynikow
		 * Jesli wynik gracza nie znalazl sie na liscie to zwraca -1
		 */
		int index = -1;
		
		List<Wynik> wyniki = ((FileIOGL)this.getFileIO()).loadHighScores();
		for(int i =0; i <5; i++){
			Log.d("zapis", "Wynik nr "+i+": "+wyniki.get(i).imie+", "+wyniki.get(i).wynik);
		}
		
		Wynik wynik = new Wynik("", score);
		wyniki.add(wynik);
		
		
		Collections.sort(wyniki);
		
		List<Wynik> nowe = new ArrayList<Wynik>();
		for(int i =0; i <5; i++){
			nowe.add(wyniki.remove(0));
		}
		
		for(int i =0; i <5; i++){
			if(nowe.get(i).equals(wynik))
				index = i+1;
		}
		
		
		return index;
	}
	
	public int saveHighScore(Wynik wynik){
		/*
		 * Zwraca pozycje gracza na liscie 5 najlepszych wynikow
		 * Jesli wynik gracza nie znalazl sie na liscie to zwraca -1
		 */
		int index = -1;
		
		List<Wynik> wyniki = ((FileIOGL)this.getFileIO()).loadHighScores();
		for(int i =0; i <5; i++){
			Log.d("zapis", "Wynik nr "+i+": "+wyniki.get(i).imie+", "+wyniki.get(i).wynik);
		}
		
		wyniki.add(wynik);
		
		
		Collections.sort(wyniki);
		
		List<Wynik> nowe = new ArrayList<Wynik>();
		for(int i =0; i <5; i++){
			nowe.add(wyniki.remove(0));
		}
		
		for(int i =0; i <5; i++){
			if(nowe.get(i).equals(wynik))
				index = i+1;
		}
		
		((FileIOGL)this.getFileIO()).saveHighScores(nowe);
		
		return index;
	}
	

	
	
	@Override
	public Screen getStartScreen() {
		/*Odczytywanie ustawien dzwieku */
		String settings = getFileIO().readSettings().toString();
		Scanner sc = new Scanner(settings);
		if(settings== null || settings.equals("")){
			setSoundsEnabled(true);
		}
		
		
		while(sc.hasNext()){
			odczytany = sc.nextLine();
			if(odczytany.equals("sounds=off")){
				setSoundsEnabled(false);
				break;
			}else if(odczytany.equals("sounds=on")){
				setSoundsEnabled(true);
				break;
			}
		}
		
		/*Jesli ktos odpala pierwszy raz
		 * to generujemy defaultowe wyniki (high scores)
		 */
		List<Wynik> wyniki = ((FileIOGL)this.getFileIO()).loadHighScores();
		if(wyniki == null){
			wyniki = new ArrayList<Wynik>();
			wyniki.add(new Wynik("Penguin", 1000));
			wyniki.add(new Wynik("Penguin", 900));
			wyniki.add(new Wynik("Penguin", 800));
			wyniki.add(new Wynik("Penguin", 700));
			wyniki.add(new Wynik("Penguin", 600));
			((FileIOGL)this.getFileIO()).saveHighScores(wyniki);
		}
		
		
		return new MenuScreen(this);
	}
	
	@Override
	public void onBackPressed() {

			if(currentScreen instanceof MenuScreen){
				finish();
			}else{
				((InputGL)getInput()).addBackEvent();
			}
				
		
		
	}
}
